package controlador;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.SQLException;
import java.util.Vector;
import javax.swing.JOptionPane;
import modelo.ModeloIngredientes;
import modelo.ModeloOrden;
import modelo.ModeloProductos;
import modelo.ModeloReporteIngredientesUsados;
import modelo.ModeloReporteVentas;
import vista.VistaListados;
import vista.VistaModeloTabla;
import vista.VistaReportes;

public class ControladorListados implements ActionListener{

	private VistaListados vista;
	private ModeloOrden modeloorden;
	private ModeloIngredientes modeloingrediente;
	private ModeloProductos modeloproducto;
	
	
	public ControladorListados(VistaListados vista){
		super();
		this.vista = vista;
		this.modeloorden = new ModeloOrden();
		this.modeloingrediente = new ModeloIngredientes();
		this.modeloproducto = new ModeloProductos();
		
	}
	
	public void actionPerformed(ActionEvent ae) {

		int tipo;
			// BUSCAR
			if(ae.getActionCommand().equalsIgnoreCase(vista.getBtnBuscar().getText())){
				
				tipo= vista.getTxtlistados().getSelectedIndex();
				java.sql.ResultSet rs;
				
				if (tipo==0)
				{					
					if (vista.getTxtSentido().getSelectedIndex()==0)					{
						rs= modeloorden.listarASC();
						}
					else {
						rs= modeloorden.listarDESC();
					}
					
					Vector<ModeloReporteVentas> vRpt1= new Vector<ModeloReporteVentas>();
														
					try {
						
						while(rs.next())
						{		
							//public ModeloReporteVentas(String orden, String producto, int cantidad, double total) {
							ModeloReporteVentas actualReporte = new ModeloReporteVentas(rs.getString("id"), rs.getString("id_producto"), rs.getInt("cantidad"), rs.getDouble("total"));							
							vRpt1.addElement(actualReporte);
							
						}
						
						if(vRpt1.size()>0){
							
							VistaReportes vista =  new VistaReportes (tipo);
							vista.setResultados(new VistaModeloTabla(vRpt1, tipo, ""));							
							
						}
						else JOptionPane.showMessageDialog(null,"No hay elementos para mostrar", "<<La Guapa>>", JOptionPane.INFORMATION_MESSAGE);
						
						
					} catch (SQLException e) {
						e.printStackTrace();
					}
					
					
				}else
				{
					if (tipo==1)
					{
						rs= modeloingrediente.listar();						
						Vector<ModeloIngredientes> vIng= new Vector<ModeloIngredientes>();
						
						try {
							
							while(rs.next())
							{
								modeloingrediente= new ModeloIngredientes(rs.getString("id"),rs.getString("descripcion"), rs.getInt("stock"), rs.getDouble("costo"));
								vIng.addElement(modeloingrediente);								
							}
							
							if (vIng.size()>0)
							{									
								VistaReportes vista =  new VistaReportes (tipo);
								vista.setResultados(new VistaModeloTabla(vIng, tipo));
								
							}
							else JOptionPane.showMessageDialog(null,"No hay elementos para mostrar", "<<La Guapa>>", JOptionPane.INFORMATION_MESSAGE);
							
						} catch (SQLException e) {
							e.printStackTrace();
						}
						
						
					}else
					{
						if (tipo==2)
						{
							
							if (vista.getTxtSentido().getSelectedIndex()==0)
							{
								rs= modeloproducto.listarIngASC();
								}
							else {
								rs= modeloproducto.listarIngDESC();
							}
							
							Vector<ModeloReporteIngredientesUsados> vUsa= new Vector<ModeloReporteIngredientesUsados>();
							
							try {
								
								while(rs.next())
								{
								
									ModeloReporteIngredientesUsados actualReporte = new ModeloReporteIngredientesUsados(rs.getString("ingrediente"), rs.getString("producto"), rs.getInt("cantidad"));							
									vUsa.addElement(actualReporte);
									
								}
								
								if (vUsa.size()>0)
								{									
									VistaReportes vista = new VistaReportes (tipo);
									vista.setResultados(new VistaModeloTabla(vUsa, tipo, 0));
									
								}
								else JOptionPane.showMessageDialog(null,"No hay elementos para mostrar", "<<La Guapa>>", JOptionPane.INFORMATION_MESSAGE);
								
							} catch (SQLException e) {
								e.printStackTrace();
							}
							
							
							
							
						}
					}
				}
					
			}
			
	}

}
